package com.example.demo.server.impl;

import com.example.demo.dao.UserRepository;
import com.example.demo.pojo.User;
import com.example.demo.server.UserServer;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.NoSuchElementException;
import java.util.Optional;

/**
 * Server 层的实现类 , 用于实现操作用户的数据 ,
 *
 * @author 刘二朋
 * @date 2020-11-27 15:28
 */
@Service
public class UserServerImpl implements UserServer {
    /**
     * UserRepository 接口 , 用于操作的user数据表中的数据
     */
    @Resource
    UserRepository userRepository;

    /**
     * 保存用户的方法
     *
     * @param user 要保存的用户
     * @return 返回保存的用户
     */
    @Override
    public User saveTheUser(User user) {
        return userRepository.save(user);
    }

    /**
     * 通过id 来搜索用户
     *
     * @param id 要进行获取的用户
     * @return 返回查询到的用户
     */
    @Override
    public User fromById(String id) {
        Optional<User> byId = userRepository.findById(id);
        User user = null;
        try {
            user = byId.get();
        } catch (NoSuchElementException e) {
            return user;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return user;
    }

    @Override
    public User findByIdAndPassword(String id, String password) {
        User byIdAndPassword = userRepository.findByIdAndPassword(id, password);
        return byIdAndPassword;
    }

    /**
     * 根据id , 来修改用户的昵称
     *
     * @param id   要进行修改的用户的账号
     * @param name 要进行修改的昵称
     * @return 返回修改后的结果
     */
    @Override
    public int updataNameInId(String id, String name) {
        return userRepository.updataNameInId(id, name);
    }

    /**
     * 根据id , 来修改用户的密码
     *
     * @param id       要进行修改的用户的账号
     * @param password 要进行修改的密码
     * @return 返回修改后的结果
     */
    @Override
    public int updataPassInId(String id, String password) {
        return userRepository.updataPassInId(id, password);
    }

    /**
     * 根据id , 来修改用户的密码
     *
     * @param id     要进行修改的用户的账号
     * @param avater 要进行修改的密码
     * @return 返回修改后的结果
     */
    @Override
    public int updataAvaterInId(String id, String avater) {
        return userRepository.updataAvaterInId(id, avater);
    }


}
